package day01.pm;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;

public class LinkListTest {
  public static void main(String[] args) {

    List list = new LinkedList();
    list.add("a");
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("a");

    Iterator iterator = list.iterator();

    // 迭代器的遍历实现了下标索引或删除对象而造成的数组下标越界异常。
    /*while (iterator.hasNext()){
      Object next = iterator.next();
      if(next.equals("a")){
        iterator.remove();
      }
      System.out.println("iterator.next() = " + next);
    }*/


    // 删除元素不能完全的解决下标问题。所以在集合遍历的使用方法上, 迭代器能完美的解决相应的问题。
    // for (int i = 0; i < list.size(); i++) {
    //   // 通过数组的元素进行删除
    //   list.remove("a");
    //   System.out.println("list.get(i) = " + list.get(i));
    // }

    // 集合是容器, 它是有大小的。添加和删除元素, 都会对容器的大小造成改变。
    // list.size() == 3
    // list.remove(1)  list.size() == 2
    // for (int i = 0; i < list.size(); i++) {
    //   list.remove(1); // 可以实现对中间数据进行操作的。
    //   System.out.println("list.get(i) = " + list.get(i));
    // }


    /*List list = new Stack() ;

    list.add("hello");
    list.add("obj");
    list.add("代码虐我千百遍");
    list.add("我待代码如初见");

    // for (int i = 0; i < list.size(); i++) {
    //   System.out.println("list.get(i) = " + list.get(i));
    // }

    System.out.println("list.get(0) = " + list.get(0));
    list.set(0, "hello world");
    System.out.println("list.get(0) = " + list.get(0));*/

    // System.out.println("list.get(1) = " + list.get(1));
    // list.remove(1);
    // System.out.println("list.get(1) = " + list.get(1));




    /*List list = new LinkedList();

    list.add("a");
    LinkedList ll = (LinkedList) list;
    ll.addFirst("b");

    for (int i = 0; i < list.size(); i++) {
      System.out.println("list.get(i) = " + list.get(i));
    }*/

  }
}
